--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / vendor / lxmfy / tests / test_hypothesis_storage.py
Displaying Raw • Download
vendor/lxmfy/tests/test_hypothesis_storage.py dev (2bf00cb3) Text, 2.33 KB
Tff7b72from T7ee787datetime Tff7b72import Te6edf3datetime
Tff7b72from T7ee787hypothesis Tff7b72import Te6edf3given
Tff7b72from T7ee787hypothesis Tff7b72import Te6edf3strategies Tff7b72as Te6edf3st
Tff7b72from T7ee787lxmfyT7ee787.T7ee787storage Tff7b72import Te6edf3AttachmentTb4b4b4, Te6edf3AttachmentTypeTb4b4b4, Te6edf3deserialize_valueTb4b4b4, Te6edf3serialize_value
Tff7b72class T56d364TestStoragePropertyBasedTb4b4b4:
T8b949e"""Property-based tests for storage serialization."""
T8b949e# Strategy for nested JSON-like data with bytes and datetime
Tf0883e@stTff7b72.Td2a8ffcomposite
Tff7b72def Td2a8ffserializable_strategyTb4b4b4(Te6edf3drawTb4b4b4)Tb4b4b4:
T8b949e"""Generates data that LXMFy storage should be able to serialize."""
Tff7b72return Te6edf3drawTb4b4b4(
Te6edf3stTff7b72.Td2a8ffrecursiveTb4b4b4(
Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(
Te6edf3stTff7b72.Td2a8ffnoneTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffbooleansTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffintegersTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8fffloatsTb4b4b4(Te6edf3allow_nanTff7b72=Tff7b72FalseTb4b4b4, Te6edf3allow_infinityTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8fftextTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffbinaryTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffdatetimesTb4b4b4(
Te6edf3max_valueTff7b72=Te6edf3datetimeTb4b4b4(T79c0ff2100Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4,
Te6edf3min_valueTff7b72=Te6edf3datetimeTb4b4b4(T79c0ff1970Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tff7b72lambda Te6edf3childrenTb4b4b4: Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(
Te6edf3stTff7b72.Td2a8fflistsTb4b4b4(Te6edf3childrenTb4b4b4)Tb4b4b4,
Te6edf3stTff7b72.Td2a8ffdictionariesTb4b4b4(Te6edf3stTff7b72.Td2a8fftextTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3childrenTb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tf0883e@givenTb4b4b4(Te6edf3dataTff7b72=Te6edf3serializable_strategyTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_serialization_roundtripTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dataTb4b4b4)Tb4b4b4:
T8b949e"""Test that serialize/deserialize is a lossless roundtrip for supported types."""
Te6edf3serialized Tff7b72= Te6edf3serialize_valueTb4b4b4(Te6edf3dataTb4b4b4)
Te6edf3deserialized Tff7b72= Te6edf3deserialize_valueTb4b4b4(Te6edf3serializedTb4b4b4)
T8b949e# Datetime might lose microsecond precision depending on isoformat, but fromisoformat handles it
T8b949e# Actually, LXMFy uses isoformat() which is good.
Tff7b72assert Te6edf3deserialized Tff7b72== Te6edf3data
Tf0883e@givenTb4b4b4(
Tffa657typeTff7b72=Te6edf3stTff7b72.Td2a8ffsampled_fromTb4b4b4(Tffa657listTb4b4b4(Te6edf3AttachmentTypeTb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3nameTff7b72=Te6edf3stTff7b72.Td2a8fftextTb4b4b4(Te6edf3min_sizeTff7b72=T79c0ff1Tb4b4b4)Tb4b4b4,
Te6edf3dataTff7b72=Te6edf3stTff7b72.Td2a8ffbinaryTb4b4b4(Tb4b4b4)Tb4b4b4,
Tffa657formatTff7b72=Te6edf3stTff7b72.Td2a8fftextTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fftest_attachment_roundtripTb4b4b4(Tff7b72selfTb4b4b4, Tffa657typeTb4b4b4, Te6edf3nameTb4b4b4, Te6edf3dataTb4b4b4, Tffa657formatTb4b4b4)Tb4b4b4:
T8b949e"""Test Attachment serialization roundtrip."""
Te6edf3att Tff7b72= Te6edf3AttachmentTb4b4b4(Tffa657typeTff7b72=Tffa657typeTb4b4b4, Te6edf3nameTff7b72=Te6edf3nameTb4b4b4, Te6edf3dataTff7b72=Te6edf3dataTb4b4b4, Tffa657formatTff7b72=Tffa657formatTb4b4b4)
Te6edf3serialized Tff7b72= Te6edf3serialize_valueTb4b4b4(Te6edf3attTb4b4b4)
Te6edf3deserialized Tff7b72= Te6edf3deserialize_valueTb4b4b4(Te6edf3serializedTb4b4b4)
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3deserializedTb4b4b4, Te6edf3AttachmentTb4b4b4)
Tff7b72assert Te6edf3deserializedTff7b72.Td2a8fftype Tff7b72== Te6edf3attTff7b72.Td2a8fftype
Tff7b72assert Te6edf3deserializedTff7b72.Td2a8ffname Tff7b72== Te6edf3attTff7b72.Td2a8ffname
Tff7b72assert Te6edf3deserializedTff7b72.Td2a8ffdata Tff7b72== Te6edf3attTff7b72.Td2a8ffdata
Tff7b72assert Te6edf3deserializedTff7b72.Td2a8ffformat Tff7b72== Te6edf3attTff7b72.Td2a8ffformat
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────